import { crawlNovel } from './src/crawler.js';
import { saveNovelToFile } from './src/fileManager.js';
import path from 'path';
import { fileURLToPath } from 'url';
import fs from 'fs/promises';

// 获取当前文件的目录
const __dirname = path.dirname(fileURLToPath(import.meta.url));

// 确保novels目录存在
async function ensureNovelsDir() {
    const novelsDir = path.join(__dirname, 'novels');
    try {
        await fs.access(novelsDir);
    } catch (error) {
        // 目录不存在，创建它
        await fs.mkdir(novelsDir, { recursive: true });
        console.log(`创建目录: ${novelsDir}`);
    }
    return novelsDir;
}

// 支持的网站配置
const sites = [
    {
        name: '3yt.org',
        url: 'https://m.3yt.org/ml/152842/',  // 魔道祖师目录页
        startChapter: 1,
        maxChapters: 3,
        delay: 1000
    },
    // 可以添加其他网站的配置
    // {
    //     name: 'xbiquge.la',
    //     url: 'https://www.xbiquge.la/10/10489/',  // 某小说目录页
    //     startChapter: 1,
    //     maxChapters: 3,
    //     delay: 1500
    // },
];

// 主函数
async function main() {
    try {
        // 确保novels目录存在
        const novelsDir = await ensureNovelsDir();

        // 获取命令行参数
        const args = process.argv.slice(2);
        const siteIndex = args[0] ? parseInt(args[0]) : 0;

        if (siteIndex >= sites.length) {
            console.error(`错误: 网站索引 ${siteIndex} 超出范围，最大索引为 ${sites.length - 1}`);
            process.exit(1);
        }

        // 选择要爬取的网站
        const site = sites[siteIndex];
        const outputFile = path.join(novelsDir, `${site.name}-test.txt`);

        console.log(`开始爬取网站: ${site.name}`);
        console.log(`目录页URL: ${site.url}`);
        console.log(`输出文件: ${outputFile}`);
        console.log(`起始章节: ${site.startChapter}`);
        console.log(`最大章节数: ${site.maxChapters}`);
        console.log(`爬取间隔: ${site.delay}ms`);
        console.log('----------------------------');

        // 爬取小说
        const novel = await crawlNovel(
            site.url,
            site.startChapter,
            site.maxChapters,
            site.delay
        );

        // 保存为文件
        await saveNovelToFile(novel, outputFile);

        console.log('爬取完成！');
        console.log(`小说已保存到: ${outputFile}`);
        console.log(`标题: ${novel.title}`);
        console.log(`作者: ${novel.author}`);
        console.log(`章节数: ${novel.chapters.length}`);
    } catch (error) {
        console.error('爬取过程中出错:', error);
    }
}

main();